package com.sss.hloster0304;

public class Student {
//属性
	// 成员变量
	private String stuName;
	private String stuSex;
	private double stuScore;

	// 行为
	/**
	 * 学习行为
	 */
	public void doStuding() {
		System.out.println(this.stuName + "  is   studing..........");
	}

	public void printMeInfo() {
		// 局部变量
		int stuAge = 20;
		// 匿名变量的用法

		System.out.println(new StuFamily("张三妈妈", "张三爸爸", "天津西青").getStuFamilyInfo());
	}

	public void printMeInfo2() {
		// 局部变量
		int stuAge = 20;
		// 匿名内部类接口的实现调用
		System.out.println(new FamilyInfoable() {
			public String getStuFamilyInfo() {
				// 根据业务逻辑，现场是实现接口的抽象方法
				String str = "年龄为：：" + stuAge + "的学生：" + getStuName();
				return str;
			}
		}.getStuFamilyInfo());
	}

	public void printMeInfo3() {
		// 局部变量
		int stuAge = 20;
		// 匿名变量的用法

		System.out.println(new FamilyInfoAbstract("张三妈妈", "张三爸爸", "天津西青") {
			public String getStuFamilyInfo() {
				// 局部内部类可以直接访问外部类的成员变量和成员方法
				/*
				 * 在局部内部类中使用外部局部变量 stuAge的值
				 * 如果该局部变量被局部内部类使用，则在jdk1.8之前需要使用final修饰，1.8+之后不需要使用final修饰；
				 */
				String str = "年龄为：：" + stuAge + "的学生：" + getStuName() + "  的家庭信息为：" + this.toString();
				return str;
			}
		}.getStuFamilyInfo());
	}

	public Student(String stuName, String stuSex, double stuScore) {
		super();
		this.stuName = stuName;
		this.stuSex = stuSex;
		this.stuScore = stuScore;
	}

	public Student() {
		super();
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public String getStuSex() {
		return stuSex;
	}

	public void setStuSex(String stuSex) {
		this.stuSex = stuSex;
	}

	public double getStuScore() {
		return stuScore;
	}

	public void setStuScore(double stuScore) {
		this.stuScore = stuScore;
	}

}
